<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <script src="../build/react.development.js"></script>
    <script src="../build/react-dom.development.js"></script>
    <script src="../build/babel.min.js"></script>
    <title>1_类的基本知识</title>
  </head>
  <body>
    <script type="text/javascript">
      /*
      总结：
        1.类中构造器不是必须写，要对实例进行一些初始化操作，如添加指定属性才写
        2.如果A类继承B类，且A类中写了构造器，那么A类构造器中的super必须要调用
        3.类中定义的方法，都是放在类的原型对象，供实例去使用
      */


        //创建一个Person类
        class Person{
          //构造器方法
          constructor(name, age){
            //构造器中的this是 类的实例对象
            this.name = name
            this.age = age
          }
            //一般方法
            speak(){
              //speak方法放在 类的原型对象上，供实例使用
              //通过Person实例调用speak时，speak中的this就是Person实例
             console.log(`我叫${this.name}，我年龄${this.age}`)
            }
        }

        class Student extends Person{

          constructor(name, age, id){
            super(name, age)
            this.id = id
            this.school = 'AA'
          }

          speak(){
            console.log(`我叫${this.name}，我年纪${this.age},我读${this.id}`);
          }

          study(){
            console.log(`我很努力`);
          }
        }

        const s1 = new Student('dd', 6, 1)
        console.log(s1)
        const p1 = new Person()
        console.log(p1)
        s1.speak()
        s1.study()
  
    </script>
  </body>
</html>